/**
 *
 */
package com.aco.fatureapp.model;

import java.io.Serializable;

import br.com.ac.fatureweb.integration.model.ImovelVO;

import com.orm.SugarRecord;
import com.orm.dsl.Ignore;

public class Imovel extends SugarRecord<Imovel> implements Serializable {

	/**
	 * Serial
	 */
	private static final long serialVersionUID = -3114872502178573117L;

	private Long idIntegracao;

	private Long idCarga;

	private Long inscricao;

	private Integer mes;

	private Integer ano;

	private Long codLocalidade;

	private Long codDistrito;

	private Long codSetor;

	private Integer ordemRoteiro;

	private String nomeResponsavel;

	private String cpfcnpj;

	private String rua;

	private String numero;

	private String complemento;

	private String bairro;

	private String cidade;

	private String uf;

	private String cep;

	private String categoria;

	private String classe;

	private Long tarifa;

	private boolean temHidrometro;

	private String numeroHidrometro;

	private Long dataInstalacaoHidrometro;

	private Long consumoMedio;

	private Long leituraAnterior;

	private Long ocorrenciaAnterior;

	private Long dataLeituraAnterior;

	private Long codReservatorio;

	private boolean flgFaturaAgua;

	private boolean flgFaturaEsgoto;

	private Double percentualEsgoto;

	private boolean isentoConshid;

	private boolean isentoTaxa1;

	private boolean isentoTaxa2;

	private boolean flgEmitirConta;

	private Integer situacao;

	private boolean agrupadora;

	private boolean flgDebitoEmConta;

	private String mesesDebito;

	private Long dataProximaLeitura;

	private Long dataVencimento;

	private String numeroFatura;

	private String codigoBarras;

	public Imovel() {
		super();
	}

	public Imovel(final Long idIntegracao, final Long idCarga,
			final Long inscricao, final Integer mes, final Integer ano,
			final Long codLocalidade, final Long codDistrito,
			final Long codSetor, final Integer ordemRoteiro,
			final String nomeResponsavel, final String cpfcnpj,
			final String rua, final String numero, final String complemento,
			final String bairro, final String cidade, final String uf,
			final String cep, final String categoria, final String classe,
			final Long tarifa, final boolean temHidrometro,
			final String numeroHidrometro, final Long dataInstalacaoHidrometro,
			final Long consumoMedio, final Long leituraAnterior,
			final Long ocorrenciaAnterior, final Long dataLeituraAnterior,
			final Long codReservatorio, final boolean flgFaturaAgua,
			final boolean flgFaturaEsgoto, final Double percentualEsgoto,
			final boolean isentoConshid, final boolean isentoTaxa1,
			final boolean isentoTaxa2, final boolean flgEmitirConta,
			final Integer situacao, final boolean agrupadora,
			final boolean flgDebitoEmConta, final String mesesDebito,
			final Long dataProximaLeitura, final Long dataVencimento,
			final String numeroFatura, final String codigoBarras) {
		super();
		this.idIntegracao = idIntegracao;
		this.idCarga = idCarga;
		this.inscricao = inscricao;
		this.mes = mes;
		this.ano = ano;
		this.codLocalidade = codLocalidade;
		this.codDistrito = codDistrito;
		this.codSetor = codSetor;
		this.ordemRoteiro = ordemRoteiro;
		this.nomeResponsavel = nomeResponsavel;
		this.cpfcnpj = cpfcnpj;
		this.rua = rua;
		this.numero = numero;
		this.complemento = complemento;
		this.bairro = bairro;
		this.cidade = cidade;
		this.uf = uf;
		this.cep = cep;
		this.categoria = categoria;
		this.classe = classe;
		this.tarifa = tarifa;
		this.temHidrometro = temHidrometro;
		this.numeroHidrometro = numeroHidrometro;
		this.dataInstalacaoHidrometro = dataInstalacaoHidrometro;
		this.consumoMedio = consumoMedio;
		this.leituraAnterior = leituraAnterior;
		this.ocorrenciaAnterior = ocorrenciaAnterior;
		this.dataLeituraAnterior = dataLeituraAnterior;
		this.codReservatorio = codReservatorio;
		this.flgFaturaAgua = flgFaturaAgua;
		this.flgFaturaEsgoto = flgFaturaEsgoto;
		this.percentualEsgoto = percentualEsgoto;
		this.isentoConshid = isentoConshid;
		this.isentoTaxa1 = isentoTaxa1;
		this.isentoTaxa2 = isentoTaxa2;
		this.flgEmitirConta = flgEmitirConta;
		this.situacao = situacao;
		this.agrupadora = agrupadora;
		this.flgDebitoEmConta = flgDebitoEmConta;
		this.mesesDebito = mesesDebito;
		this.dataProximaLeitura = dataProximaLeitura;
		this.dataVencimento = dataVencimento;
		this.numeroFatura = numeroFatura;
		this.codigoBarras = codigoBarras;
	}

	public Long getIdIntegracao() {
		return idIntegracao;
	}

	public void setIdIntegracao(final Long idIntegracao) {
		this.idIntegracao = idIntegracao;
	}

	public Long getIdCarga() {
		return idCarga;
	}

	public void setIdCarga(final Long idCarga) {
		this.idCarga = idCarga;
	}

	public Long getInscricao() {
		return inscricao;
	}

	public void setInscricao(final Long inscricao) {
		this.inscricao = inscricao;
	}

	public Integer getMes() {
		return mes;
	}

	public void setMes(final Integer mes) {
		this.mes = mes;
	}

	public Integer getAno() {
		return ano;
	}

	public void setAno(final Integer ano) {
		this.ano = ano;
	}

	public Long getCodLocalidade() {
		return codLocalidade;
	}

	public void setCodLocalidade(final Long codLocalidade) {
		this.codLocalidade = codLocalidade;
	}

	public Long getCodDistrito() {
		return codDistrito;
	}

	public void setCodDistrito(final Long codDistrito) {
		this.codDistrito = codDistrito;
	}

	public Long getCodSetor() {
		return codSetor;
	}

	public void setCodSetor(final Long codSetor) {
		this.codSetor = codSetor;
	}

	public Integer getOrdemRoteiro() {
		return ordemRoteiro;
	}

	public void setOrdemRoteiro(final Integer ordemRoteiro) {
		this.ordemRoteiro = ordemRoteiro;
	}

	public String getNomeResponsavel() {
		return nomeResponsavel;
	}

	public void setNomeResponsavel(final String nomeResponsavel) {
		this.nomeResponsavel = nomeResponsavel;
	}

	public String getCpfcnpj() {
		return cpfcnpj;
	}

	public void setCpfcnpj(final String cpfcnpj) {
		this.cpfcnpj = cpfcnpj;
	}

	public String getRua() {
		return rua;
	}

	public void setRua(final String rua) {
		this.rua = rua;
	}

	public String getNumero() {
		return numero;
	}

	public void setNumero(final String numero) {
		this.numero = numero;
	}

	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(final String complemento) {
		this.complemento = complemento;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(final String bairro) {
		this.bairro = bairro;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(final String cidade) {
		this.cidade = cidade;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(final String uf) {
		this.uf = uf;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(final String cep) {
		this.cep = cep;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(final String categoria) {
		this.categoria = categoria;
	}

	public String getClasse() {
		return classe;
	}

	public void setClasse(final String classe) {
		this.classe = classe;
	}

	public Long getTarifa() {
		return tarifa;
	}

	public void setTarifa(final Long tarifa) {
		this.tarifa = tarifa;
	}

	public boolean isTemHidrometro() {
		return temHidrometro;
	}

	public void setTemHidrometro(final boolean temHidrometro) {
		this.temHidrometro = temHidrometro;
	}

	public String getNumeroHidrometro() {
		return numeroHidrometro;
	}

	public void setNumeroHidrometro(final String numeroHidrometro) {
		this.numeroHidrometro = numeroHidrometro;
	}

	public Long getDataInstalacaoHidrometro() {
		return dataInstalacaoHidrometro;
	}

	public void setDataInstalacaoHidrometro(final Long dataInstalacaoHidrometro) {
		this.dataInstalacaoHidrometro = dataInstalacaoHidrometro;
	}

	public Long getConsumoMedio() {
		return consumoMedio;
	}

	public void setConsumoMedio(final Long consumoMedio) {
		this.consumoMedio = consumoMedio;
	}

	public Long getLeituraAnterior() {
		return leituraAnterior;
	}

	public void setLeituraAnterior(final Long leituraAnterior) {
		this.leituraAnterior = leituraAnterior;
	}

	public Long getOcorrenciaAnterior() {
		return ocorrenciaAnterior;
	}

	public void setOcorrenciaAnterior(final Long ocorrenciaAnterior) {
		this.ocorrenciaAnterior = ocorrenciaAnterior;
	}

	public Long getDataLeituraAnterior() {
		return dataLeituraAnterior;
	}

	public void setDataLeituraAnterior(final Long dataLeituraAnterior) {
		this.dataLeituraAnterior = dataLeituraAnterior;
	}

	public Long getCodReservatorio() {
		return codReservatorio;
	}

	public void setCodReservatorio(final Long codReservatorio) {
		this.codReservatorio = codReservatorio;
	}

	public boolean isFlgFaturaAgua() {
		return flgFaturaAgua;
	}

	public void setFlgFaturaAgua(final boolean flgFaturaAgua) {
		this.flgFaturaAgua = flgFaturaAgua;
	}

	public boolean isFlgFaturaEsgoto() {
		return flgFaturaEsgoto;
	}

	public void setFlgFaturaEsgoto(final boolean flgFaturaEsgoto) {
		this.flgFaturaEsgoto = flgFaturaEsgoto;
	}

	public Double getPercentualEsgoto() {
		return percentualEsgoto;
	}

	public void setPercentualEsgoto(final Double percentualEsgoto) {
		this.percentualEsgoto = percentualEsgoto;
	}

	public boolean isIsentoConshid() {
		return isentoConshid;
	}

	public void setIsentoConshid(final boolean isentoConshid) {
		this.isentoConshid = isentoConshid;
	}

	public boolean isIsentoTaxa1() {
		return isentoTaxa1;
	}

	public void setIsentoTaxa1(final boolean isentoTaxa1) {
		this.isentoTaxa1 = isentoTaxa1;
	}

	public boolean isIsentoTaxa2() {
		return isentoTaxa2;
	}

	public void setIsentoTaxa2(final boolean isentoTaxa2) {
		this.isentoTaxa2 = isentoTaxa2;
	}

	public boolean isFlgEmitirConta() {
		return flgEmitirConta;
	}

	public void setFlgEmitirConta(final boolean flgEmitirConta) {
		this.flgEmitirConta = flgEmitirConta;
	}

	public Integer getSituacao() {
		return situacao;
	}

	public void setSituacao(final Integer situacao) {
		this.situacao = situacao;
	}

	public boolean isAgrupadora() {
		return agrupadora;
	}

	public void setAgrupadora(final boolean agrupadora) {
		this.agrupadora = agrupadora;
	}

	public boolean isFlgDebitoEmConta() {
		return flgDebitoEmConta;
	}

	public void setFlgDebitoEmConta(final boolean flgDebitoEmConta) {
		this.flgDebitoEmConta = flgDebitoEmConta;
	}

	public String getMesesDebito() {
		return mesesDebito;
	}

	public void setMesesDebito(final String mesesDebito) {
		this.mesesDebito = mesesDebito;
	}

	public Long getDataProximaLeitura() {
		return dataProximaLeitura;
	}

	public void setDataProximaLeitura(final Long dataProximaLeitura) {
		this.dataProximaLeitura = dataProximaLeitura;
	}

	public Long getDataVencimento() {
		return dataVencimento;
	}

	public void setDataVencimento(final Long dataVencimento) {
		this.dataVencimento = dataVencimento;
	}

	public String getNumeroFatura() {
		return numeroFatura;
	}

	public void setNumeroFatura(final String numeroFatura) {
		this.numeroFatura = numeroFatura;
	}

	public String getCodigoBarras() {
		return codigoBarras;
	}

	public void setCodigoBarras(final String codigoBarras) {
		this.codigoBarras = codigoBarras;
	}

	/**
	 * Get codificação do imóvel formatada.
	 *
	 * @return
	 */
	@Ignore
	public String getCodificacao() {
		final StringBuilder builder = new StringBuilder(String.format("%04d",
				codLocalidade) + "-");
		builder.append(String.format("%04d", codDistrito) + "-");
		builder.append(String.format("%04d", codSetor));

		return builder.toString();
	}

	/**
	 * Get o endereço do imóvel formatado.
	 *
	 * @return
	 */
	@Ignore
	public String getEndereco() {

		final StringBuilder builder = new StringBuilder(rua + ", ");

		if (numero != null && numero.length() > 0) {
			builder.append(numero + ", ");
		}
		if (complemento != null && complemento.length() > 0) {
			builder.append(complemento + ", ");
		}
		if (bairro != null && bairro.length() > 0) {
			builder.append(bairro + ", ");
		}
		if (cidade != null && cidade.length() > 0) {
			builder.append(cidade + "/" + uf);
		}
		if (cep != null && cep.length() > 0) {
			builder.append(" - CEP: " + cep);
		}

		return builder.toString();
	}

	@Ignore
	public String getEndereco2() {

		final StringBuilder builder = new StringBuilder(rua + ", ");

		if (numero != null && numero.length() > 0) {
			builder.append(numero + ", ");
		}
		if (complemento != null && complemento.length() > 0) {
			builder.append(complemento + ", ");
		}

		return builder.toString();
	}

	public static ImovelVO parseImovelVo(final Imovel imovel) {
		if (imovel != null) {
			final ImovelVO imovelVO = new ImovelVO(imovel.getId(),
					imovel.getIdCarga(), imovel.getInscricao(),
					imovel.getMes(), imovel.getAno(),
					imovel.getCodLocalidade(), imovel.getCodDistrito(),
					imovel.getCodSetor(), imovel.getOrdemRoteiro(),
					imovel.getNomeResponsavel(), imovel.getCpfcnpj(),
					imovel.getRua(), imovel.getNumero(),
					imovel.getComplemento(), imovel.getBairro(),
					imovel.getCidade(), imovel.getUf(), imovel.getCep(),
					imovel.getCategoria(), imovel.getClasse(),
					imovel.getTarifa(), imovel.isTemHidrometro(),
					imovel.getNumeroHidrometro(),
					imovel.getDataInstalacaoHidrometro(),
					imovel.getConsumoMedio(), imovel.getLeituraAnterior(),
					imovel.getOcorrenciaAnterior(),
					imovel.getDataLeituraAnterior(),
					imovel.getCodReservatorio(), imovel.isFlgFaturaAgua(),
					imovel.isFlgFaturaEsgoto(), imovel.getPercentualEsgoto(),
					imovel.isIsentoConshid(), imovel.isIsentoTaxa1(),
					imovel.isIsentoTaxa2(), imovel.isFlgEmitirConta(),
					imovel.getSituacao(), imovel.isAgrupadora(),
					imovel.isFlgDebitoEmConta(), imovel.getMesesDebito(),
					imovel.getDataProximaLeitura(), imovel.getDataVencimento(),
					imovel.getNumeroFatura(), imovel.getCodigoBarras());

			return imovelVO;
		}

		return null;
	}
}